package com.ht.api.db.bean;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 包含sql和参数的一个bean对象
 * @author asq
 * @createTime 2024年11月29日 12:39:26
 */
@Data
@Accessors(chain = true)
public class DbSql {
	/** sql语句 */
	private String sql;
	/** sql对应参数 */
	private List<Object> paramsList;
	
	public DbSql() {
		this.sql = "";
		this.paramsList = new ArrayList<>();
	}
	
	public DbSql(String sql, List<Object> paramsList) {
		super();
		this.sql = sql;
		this.paramsList = paramsList;
	}
	
	/**
	 * 附加新sql
	 */
	public DbSql appendSql(String... sql) {
		StringBuilder sb = new StringBuilder(this.sql);
		Arrays.stream(sql).forEach(s -> sb.append(s));
		this.sql = sb.toString();
		return this;
	}
	
	/**
	 * 附加一个sql参数
	 * @param <T>
	 * @param param
	 * @return
	 */
	public DbSql appendParam(Object... param) {
		Arrays.stream(param).forEach(p -> paramsList.add(p));
		return this;
	}

	/**
	 * 附加一个参数列表
	 * @param paramsList
	 * @return
	 */
	public DbSql appendParam(List<Object> paramsList) {
		this.paramsList.addAll(paramsList);
		return this;
	}
}
